package com.winchain.provider.expiration.controller;

import com.shell.bee.base.annotation.Logging;
import com.shell.bee.mvc.controller.BaseController;
import com.shell.bee.persistence.model.PageLimit;
import com.winchain.provider.expiration.service.CbCreditService;
import com.winchain.provider.expiration.service.CbDebitService;
import com.winchain.provider.expiration.vo.CbCreditQueryVo;
import com.winchain.provider.expiration.vo.CbCreditVo;
import com.winchain.provider.expiration.vo.CbDebitQueryVo;
import com.winchain.provider.expiration.vo.CbDebitVo;
import com.winchain.provider.expiration.vo.PaymentStatsQueryVo;
import com.winchain.provider.expiration.vo.PaymentStatsVo;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ExpPaymentStatsController extends BaseController {
	@Autowired
	private CbDebitService cbDebitService;
	@Autowired
	private CbCreditService cbCreditService;

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������")
	public Map<String, BigDecimal> queryDebitStatsAmount(PaymentStatsQueryVo paymentStatsQueryVo) {
		Map<String, BigDecimal> ret = this.cbDebitService.sumDebitStatsList(paymentStatsQueryVo);
		return ret;
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������")
	public List<PaymentStatsVo> queryDebitStatsList(PageLimit limit, PaymentStatsQueryVo paymentStatsQueryVo) {
		return this.cbDebitService.queryDebitStatsList(limit, paymentStatsQueryVo);
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������")
	public List<CbDebitVo> queryCusDebitDetail(PageLimit limit, String cusId, String expDate) {
		CbDebitQueryVo debitQueryVo = new CbDebitQueryVo();
		debitQueryVo.setCusId(cusId);
		debitQueryVo.setDebitDate(expDate);

		return this.cbDebitService.selectDebitList(limit, debitQueryVo);
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������")
	public Map<String, BigDecimal> queryCreditStatsAmount(CbCreditQueryVo cbCreditQueryVo) {
		Map<String, BigDecimal> ret = this.cbCreditService.sumCreditStatsList(cbCreditQueryVo);
		return ret;
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������/����")
	public List<CbCreditVo> queryCreditStatsList(PageLimit limit, CbCreditQueryVo cbCreditQueryVo) {
		limit.setSortName("credit_date");
		limit.setSortType("desc");
		return this.cbCreditService.selectDebitCreditList(limit, cbCreditQueryVo);
	}
}
